package com.yeqian.mapper;

import com.github.pagehelper.Page;
import com.yeqian.pojo.Article;
import io.swagger.models.auth.In;
import org.springframework.cache.annotation.CacheConfig;
import tk.mybatis.mapper.common.Mapper;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @Author : yeqian
 * @Date : 2020/12/24 23:01
 * 文章数据库访问层
 */

public interface ArticleMapper extends Mapper<Article> {

    /**
     * 查询每月的文章数量
     *
     * @param month
     * @return java.lang.Integer
     * @author yeqian
     * @date 2021/1/17 11:32
     */
    Integer getArticleCountByMonth(String month);

    /**
     * 根据id查询
     *
     * @param tagId
     * @return java.util.List<com.yeqian.pojo.Article>
     * @author yeqian
     * @date 2021/1/16 13:20
     */
    List<Article> getArticleByTagId(Integer tagId);

    /**
     * 查询最近几篇文章
     *
     * @param maxNumber
     * @return java.util.List<com.yeqian.pojo.Article>
     * @author yeqian
     * @date 2021/1/14 21:10
     */
    List<Article> getRecent(Integer maxNumber);

    /**
     * 查询阅读量最多的几篇文章
     *
     * @param maxNumber
     * @return java.util.List<com.yeqian.pojo.Article>
     * @author yeqian
     * @date 2021/1/14 19:17
     */
    List<Article> listOrderByReadCount(Integer maxNumber);

    /**
     * 获取所有的article的图片的url
     *
     * @param
     * @return java.util.List<java.lang.String>
     * @author yeqian
     * @date 2021/1/10 14:02
     */
    List<String> getUrl();

    /**
     * 删除原有的标签
     *
     * @param articleId
     * @return void
     * @author yeqian
     * @date 2021/1/6 20:07
     */
    void deleteArticleId(Integer articleId);

    /**
     * 查询文章内容
     *
     * @param id
     * @return com.yeqian.pojo.Article
     * @author yeqian
     * @date 2021/1/6 15:24
     */
    Article getArticle(Integer id);

    /**
     * 获取文章的阅读量
     *
     * @param
     * @return void
     * @author yeqian
     * @date 2021/1/3 10:46
     */
    List<Article> getArticleReadCount();

    /**
     * 获取文章的阅读量
     *
     * @param id
     * @return void
     * @author yeqian
     * @date 2021/1/3 10:46
     */
    Article getReadCountByArticleId(Integer id);

    /**
     * 保存文章阅读量
     *
     * @param map
     * @return void
     * @author yeqian
     * @date 2021/1/2 18:11
     */
    void saveReadCount(Map map);

    /**
     * 获取所有文章的id
     *
     * @param
     * @return java.util.List<java.lang.Integer>
     * @author yeqian
     * @date 2021/1/2 18:08
     */
    List<Integer> getAllArticleId();

    /**
     * 保存文章与标签之前的关系
     *
     * @param map
     * @return void
     * @author yeqian
     * @date 2021/1/1 19:40
     */
    void saveArticleAndTag(Map map);

    /**
     * 查询所有人的文章记录
     *
     * @param status
     * @return com.github.pagehelper.Page<com.yeqian.pojo.Article>
     * @author yeqian
     * @date 2020/12/28 22:13
     */
    Page<Article> getAllArticleByPage(Integer status);

    /**
     * 查询最近n条文章记录
     *
     * @param map
     * @return java.util.List<com.yeqian.pojo.Article>
     * @author yeqian
     * @date 2020/12/28 14:49
     */
    List<Article> getRecentArticle(Map map);

    /**
     * 获取文章阅读量
     *
     * @param author
     * @return java.lang.Integer
     * @author yeqian
     * @date 2020/12/28 14:02
     */
    Integer getReadCount(Integer author);

    /**
     * 获取文章数量
     *
     * @param map
     * @return java.lang.Integer
     * @author yeqian
     * @date 2020/12/27 23:09
     */
    Integer getTotalCount(Map map);

    /**
     * 添加文章
     *
     * @param article
     * @return void
     * @author yeqian
     * @date 2020/12/27 14:45
     */
    void saveArtice(Article article);

    /**
     * 文章分页查询
     *
     * @param map
     * @return com.github.pagehelper.Page<com.yeqian.pojo.Article>
     * @author yeqian
     * @date 2020/12/24 23:44
     */
    Page<Article> listByCondition(Map map);

    /**
     * 根据主键设置回收站
     *
     * @param map
     * @return void
     * @author yeqian
     * @date 2020/12/27 16:47
     */
    void setStatus(Map map);

    /**
     * 设置是否置顶
     *
     * @param map
     * @return void
     * @author yeqian
     * @date 2021/3/24 12:30
     */
    void saveArticleAndRealaTionShip(Map<String, Integer> map);

    /**
     * 删除文章的置顶关系
     *
     * @param id
     * @return void
     * @author yeqian
     * @date 2021/1/22 12:10
     */
    void deleteArticleAndRealaTionShip(Integer id);

    /**
     * 将文章修改为置顶
     *
     * @param articleId
     * @return void
     * @author yeqian
     * @date 2021/1/22 12:47
     */
    void updateArticleAndRealaTionShip(Integer articleId);

    /**
     * 将置顶的文章取消置顶
     *
     * @param
     * @return void
     * @author yeqian
     * @date 2021/1/22 12:46
     */
    void updateTop();
}
